A virtual desktop is a combination of computing resources, such as processor, memory, storage and computer network access, and computer programs running on such resources, which is remotely accessed by a user from a remote device. Such computer programs typically include an operating system, and one or more applications running on the computer that utilize the computer resources as managed by the operating system. The remote device provides an input and output interface between an individual user and the virtual desktop. The remote device communicates inputs to the virtual desktop and receives display information from the virtual desktop for display on the remote device over a computer network. An application is used on the remote device to connect to the virtual desktop.
A service provider can provide virtual desktops as a service to multiple customers, also called tenants. The service provider generally maintains one or more data centers. A data center is a location that houses multiple server computers on which virtual desktops are implemented. A tenant typically is an enterprise that has multiple users. Each user typically has a set of applications and resources based on a classification of the user. The service provider manages the server computers so as to provision sets of virtual desktops on its server computers for use by the users of each tenant.
Generally speaking, the service provider desires to isolate its customers from selection and management of hardware configurations, i.e., server computers, used to support the customers' virtual desktops, yet the service provider can operate more profitably by efficiently deploying its resources of server computers to its tenants. One part of efficient deployment is instantiating actual server computers for use by a tenant only when the tenant is actually likely to use those resources.
Instantiating a server computer for use by a tenant involves installing the computer programs, such as the operating system, file system and application programs, licensed by that tenant for use by its users. The license terms for such computer programs can restrict a service provider from sharing computer programs or computing resources among multiple tenants. As an example restriction, the service provider may not be allowed to permit two tenants to run separate instances of a licensed computer program on different processors or processor cores on the same server computer at the same time. Other considerations, such as tenant request, or design or performance considerations, may restrict the ability or desire of a service provider to run separate instances of a licensed computer program, for different tenants, on different processors or processor cores on the same server computer at the same time. For example, some tenants may require that its users not use computing resources on a server computer that has computing resources being used at the same time by other tenants. As another example, performance of a server computer during use of some its computing resources by one tenant might degrade due to simultaneous use of other computer resources on the same server computer by another tenant.
When a service provider provides virtual desktops as a service to multiple tenants, it is generally expected that the computing resources will have high availability. High availability generally involves having additional backup computing resources ready to take over processing from other computing resources in the event of a failure. Limitations against sharing resources among multiple tenants also can impact resource utilization when high availability is supported.